The present disclosure relates generally to implementation of client-server networks.
More particularly, the disclosure provides systems and methods for maintaining the binding of a client, particularly a client with limited computational and storage resources, with at least one server.
The Internet has had a profound impact on the way society communicates. Today, the Internet is used for personal communications, for business communications, for shopping, for entertainment, for news, and more.
There are many applications that rely on a client being in constant contact with a server in order to perform a task. The client to server connection (binding) may be mission critical and may be maintained constantly. For example, an interruption in communications of approximately thirty seconds within a one-hour interval may be intolerable. Factors that may influence the client being in constant contact with the server include:
The client may reside on a small, specialized computer, with limited computational and storage resources (herein, an “Internet Appliance”).
To remove the potential for a “single point of failure” multiple servers may be deployed, geographically separated and independently addressable on the Internet. The number of servers may range into the hundreds.
When many clients (e.g., millions of clients) are expected, clients may be distributed across available servers to reduce the impact of a server failing and to maintain responsiveness of client/server bindings.
The binding between client and server may be dynamic. There are many potential causes for a client to need to change the server to which it is bound.
The desire for dynamic binding between a client and server may be related to a number of factors. To ensure that combined server resources are being allocated to provide optimal service to all clients, clients are distributed among servers. The distribution takes into account the “routing distance” between a client and the server (the number of Internet hops as well as message delivery latency). As more clients are added, the distribution may become sub-optimum and adjustment may be appropriate. In turn, some clients may be redirected to different servers. Another benefit of dynamic binding between client and server may be to provide for continuity of client services in the event a server fails or is pulled off-line for maintenance.
One approach for a client to identify and then bind with a server relies on the Internet Distributed Name Service (DNS), which can associate a static list of Internet IP addresses with a name. While machines respond to IP addresses in the form of number strings, humans are not as adept at remembering number strings. A name server (or DNS server) receives a name from a client, associates the name with an IP address, and sends the IP address to a client. The client then communicates with a server via the server's IP address.
The DNS is, however, far from simple. Name servers may receive millions of requests each day. Because a single name server may not know the address associated with a particular name, name servers may also be able to contact other name servers. A name server may start its search for an IP address by contacting one of the root name servers. The root name servers may know the IP address for all of the name servers that handle the top-level domains. For example, a name server might “ask” a root name server for the IP address associated with www.yahoo.com, and the root name server might “respond” (assuming no caching), that it does not know the IP address for www.yahoo.com, and instead provide the IP address for the COM name server. One of the keys to making this work is redundancy. There may be multiple name servers at every level, so if one fails, there are others to handle the requests.
To speed up the process, name servers may cache the IP addresses returned in response to requests. Name servers may not cache forever, though. The caching may use a component, called the Time To Live (TTL) that controls how long a name server will cache a piece of information.
When a name server receives an IP address, it may receive the TTL with it. The name server may cache the IP address for that period of time (ranging from minutes to days) and then discard it. Using TTL enables changes to propagate to the name servers.
Not all name servers respect the TTL they receive, however. This means that new information and old information may reside in the DNS at the same time. Sometimes, it may take weeks for a change in an IP address to propagate throughout the Web. Additionally, implementing a DNS protocol on an Internet Appliance may require additional computational, program storage and data storage resources that may not be available or desirable to add.